from decimal import *
import sys

archivo="memoria.txt"
opcion="a"
f = open(archivo,opcion)

def contenedores():
	return[]
	
operador  =contenedores()
entradas1 =contenedores()
entradas2 =contenedores()

def escribir_temporal(archivo,contenedor):
	nombre = raw_input()
	contenedor.append(nombre)
	archivo.write(nombre)
	archivo.write(" ")
	
def memoria(archivo,opcion):
	print "ingrese operador : "
	escribir_temporal(f,operador)
	print "ingrese primer operando : "
	escribir_temporal(f,entradas1)
	print "ingrese segunda operando, si es necesario :"
	escribir_temporal(f,entradas2)
	
def aver(x):
	lista=[]
	for i in x:
		lista.append(i)
	return lista
def chequeobinario(x,lista2):
	c=aver(x)
	for i in c:
		if i in lista2:
			return 0
def binarioadecimal(x):
	lista2=["2","3","4","5","6","7","8","9"]
	if chequeobinario(x,lista2) == 0:
		sys.exit()
	else:
		return int(x,2)
def decimalabinario(x):
	c= bin(x)[2:]
	return c
def unidad_de_control(y):
	b=int(binarioadecimal(y))
	return b		

memoria(archivo,opcion)

def not_alu(x):
	a=""
	lista2=[]
	c=aver(x)
	for i in c:
		if i == "1":lista2.append("0")
		elif i == "0":lista2.append("1")
	for i in lista2:
		a=a+i
	return a
def alu(x):
	instrucciones= {"ADD":entrada1 + entrada2,"DIV":entrada1 / entrada2 ,"MUL": entrada1 * entrada2,"SUB":
		entrada1 - entrada2,"OR" : entrada1 | entrada2 ,"XOR" : entrada1 ^ entrada2}
	if x in instrucciones :
		x=instrucciones[x]
		return x
	else:
		sys.exit()
def completarbits(z):
	y=str(z)
	x=len(y)
	a=str(x)
	lista={"1":"0000000"+z,"2":"000000"+z,"3":"00000"+z,"4":"0000"+z,"5":"000"+z,"6":"00"+z,"7":"0"+z}
	if x == 8:
		return z
	if x > 8:
		sys.exit()
	if a in lista:
		a=lista[a]
		return a	
def nosvamos():
	z=alu(a)
	z=decimalabinario(z)
	z=completarbits(z)
	f.write("\n")
	salida=open("archivo-salida.txt","a")
	salida.write(z)
	salida.write("\n")

a=(operador[0]).upper()
if a == "NOT" :
	entrada1=entradas1[0]
	z=not_alu(entrada1)
	f.write("\n")
	salida=open("archivo-salida.txt","a")
	salida.write(z)
	salida.write("\n")
else:
	b=entradas1[0]
	c=entradas2[0]
	entrada1=unidad_de_control(b)
	entrada2=unidad_de_control(c)
	nosvamos()

